if (!Bs_Objects)
{
	var Bs_Objects = [];
	//alert(Bs_Objects.length);
};

function Bs_Checkbox()
{
	this._id;
	this._tagId;
	this.checkboxName;
	this.checkboxValue; //Added by dubf on 2004/04/19
	this.value = 0;
	this.noPartly = false;
	this.disabled = false;
	this.guiNochange = false;
	this.caption;
	this.imgDir;// = '../image/checkbox/win2k/';
	this.imgWidth;//  = 13;
	this.imgHeight;// = 13;
	this.imgStyle = '';
	this.useMouseover = true;
	this.eventOnClick;
	this.eventOnChange;

	this._constructor = function()
	{
		this._id = Bs_Objects.length;
		//alert(this._id);
		Bs_Objects[this._id] = this;
		this._tagId = "Bs_Checkbox_"+this._id+"_";
	}

	this.render = function(tagId)
	{
		if (this.noPartly && (this.value == 1)) this.value = 2;
		if (!bs_isEmpty(tagId))
		{
			this._tagId = tagId;
		}
		var out  = new Array();
		var outI = 0;
		var img = '';
		 img += (this.disabled) ? 'disabled' : 'enabled';
		 img += '_' + this.value;
		 if (!this.disabled)
		 {
			out[outI++] = '<span';
			if (!this.guiNochange)
			{
				out[outI++] = ' onClick="Bs_Objects['+this._id+'].onClick(\'' + this._tagId + '\');"';
			}

			out[outI++] = ' style="cursor:hand;"';

			if (this.useMouseover && !this.guiNochange)
			{
				out[outI++] = ' onMouseOver="Bs_Objects['+this._id+'].onMouseOver(\'' + this._tagId + '\');"';
				out[outI++] = ' onMouseOut="Bs_Objects['+this._id+'].onMouseOut(\'' + this._tagId + '\');"';
			}
			out[outI++] = '>';
		 }

		if (!this.imgWidth)
		{
			if (this.imgDir.indexOf("win2000")>0)
			{
				this.imgWidth =13;
				this.imgHeight=13;
				//alert(this.imgDir);
			} else
			{
				this.imgWidth =11;
				this.imgHeight=11;
			}			
		}
		 out[outI++] = '<img id="' + this._tagId + 'icon" src="' + this.imgDir + img + '.gif" border="0" width="' + this.imgWidth + '" height="' + this.imgHeight + '"';
		 if (!bs_isEmpty(this.imgStyle))
			 out[outI++] = ' style="' + this.imgStyle + '"';
		 out[outI++] = '>';

		if (this.caption)
		{
			out[outI++] = '&nbsp;' + this.caption;
		}

		if (!this.disabled)
		{
			out[outI++] = '</span>';
		}

		if (!this.checkboxName)
		{
			this.checkboxName = 'checkbox' + this._tagId;
		}

		out[outI++] = '<input value="' + this.value + '" checkboxValue="'+this.checkboxValue+'" type=checkbox name="' + this.checkboxName + '" id="' + this.checkboxName + '" style="display:none; visibility:hidden;"';//Modied by dubf on 2004/4/19
		//alert(this.checkboxValue);
		if (this.value) out[outI++] = ' checked';
		out[outI++] = '>';

		return out.join('');
	}

	this.drawInto = function(tagId)
	{
		if (!bs_isEmpty(tagId))
		{
			this._tagId = tagId;
		}
		document.getElementById(this._tagId).innerHTML = this.render(this._tagId);
	}

	this.draw = function(tagId)
	{
		this.drawInto(tagId);
	}

	this.write = function()
	{
		document.write(this.render(this._tagId));
	}

	this.convertField = function(fieldId)
	{
		document.getElementById(fieldId).outerHTML = this.render(this._tagId);
	}

	this.onMouseOver = function()
	{
		var img = document.getElementById(this._tagId + 'icon');
		if (!img.swapOver0)
		{
			img.swapOver0 = new Image();
			img.swapOver0.src = this.imgDir + 'enabled_0_over.gif';
			img.swapOver1 = new Image();
			img.swapOver1.src = this.imgDir + 'enabled_1_over.gif';
			img.swapOver2 = new Image();
			img.swapOver2.src = this.imgDir + 'enabled_2_over.gif';
			img.swapOut0 = new Image();
			img.swapOut0.src = this.imgDir + 'enabled_0.gif';
			img.swapOut1 = new Image();
			img.swapOut1.src = this.imgDir + 'enabled_1.gif';
			img.swapOut2 = new Image();
			img.swapOut2.src = this.imgDir + 'enabled_2.gif';
		}
		img.src = img['swapOver' + this.value].src;
	}

	this.onMouseOut = function()
	{
		var img = document.getElementById(this._tagId + 'icon');
		img.src = img['swapOut' + this.value].src;
	}

	this.onClick = function()
	{
		//alert(this.value);
		switch (this.value)
		{
			case 0:
			this.value = 2;
			break;
			case 1:
			case 2:
			this.value = 0;
			this.value = 0;
			break;
			default:
			this.value = 0;
		}
		this._updateHiddenField();
		this._updateIcon();
		if (this.eventOnClick)
			this._fireEvent(this.eventOnClick);
		if (this.eventOnChange)
			this._fireEvent(this.eventOnChange);
		//alert(this.value);
	}

	this.setTo = function(value, cancelEventOnChange)
	{
		this.value = value;
		this._updateHiddenField();
		this._updateIcon();
		if (!cancelEventOnChange)
		{
			if (this.eventOnChange) this._fireEvent(this.eventOnChange);
		}
	}

	this.attachOnClick = function(globalFunctionName)
	{
		this.eventOnClick = globalFunctionName;
	}

	this.attachOnChange = function(globalFunctionName)
	{
		this.eventOnChange = globalFunctionName;
	}

	this._fireEvent = function(e)
	{
		if (e)
		{
			if (typeof(e) != 'array')
			{
				e = new Array(e);
			}
			for (var i=0; i<e.length; i++)
			{
				if (typeof(e[i]) == 'function')
				{
					e[i](this);
				} else if (typeof(e[i]) == 'string')
				{
					eval(e[i]);
				}
			}
		}
	}

	this._updateIcon = function()
	{
		var iconElm = document.getElementById(this._tagId + 'icon');
		if (iconElm != null)
		{
			var img = '';
			img += (this.disabled) ? 'disabled' : 'enabled';
			img += '_' + this.value;
			iconElm.src = this.imgDir + img + '.gif';
		}
	}

	this._updateHiddenField = function()
	{
		var elm = document.getElementById(this.checkboxName);
		elm.value = this.value;
		elm.checked = (this.value);
	}

	this._constructor();
}
